Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.

Los modelos de lenguaje a gran escala (LLMs), como ChatGPT, DeepSeek, Microsoft Copilot, se han popularizado como asistentes de programación por su facilidad de uso y capacidad para generar código a partir de instrucciones simples. Entre las aplicaciones de estos modelos se destacan la creación de f...

Full description

Autores:
Rivera Ladino, Josue Mauricio
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2025
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
spa
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/76269
Acceso en línea:
https://hdl.handle.net/1992/76269
Palabra clave:
IA
Generación de código
Vulnerabilidades en código
LLM
Ingeniería
Rights
openAccess
License
Attribution-NoDerivatives 4.0 International
id UNIANDES2_21807d7f7a30302a95eea7252e2cd510
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/76269
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.spa.fl_str_mv Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
title Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
spellingShingle Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
IA
Generación de código
Vulnerabilidades en código
LLM
Ingeniería
title_short Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
title_full Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
title_fullStr Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
title_full_unstemmed Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
title_sort Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.
dc.creator.fl_str_mv Rivera Ladino, Josue Mauricio
dc.contributor.advisor.none.fl_str_mv Rueda Rodríguez, Sandra Julieta
dc.contributor.author.none.fl_str_mv Rivera Ladino, Josue Mauricio
dc.subject.keyword.spa.fl_str_mv IA
Generación de código
Vulnerabilidades en código
topic IA
Generación de código
Vulnerabilidades en código
LLM
Ingeniería
dc.subject.keyword.eng.fl_str_mv LLM
dc.subject.themes.spa.fl_str_mv Ingeniería
description Los modelos de lenguaje a gran escala (LLMs), como ChatGPT, DeepSeek, Microsoft Copilot, se han popularizado como asistentes de programación por su facilidad de uso y capacidad para generar código a partir de instrucciones simples. Entre las aplicaciones de estos modelos se destacan la creación de funciones, consultas de bases de datos, interfaces web y algoritmos complejos. Sin embargo, estos modelos también presentan riesgos importantes, ya que el código generado puede tener vulnerabilidades de seguridad que permiten inyecciones de código, filtraciones de datos o errores en autenticación. El problema principal que este trabajo estudia es la presencia de debilidades de seguridad en el código generado automáticamente por modelos LLM. Estudios recientes han revelado que tal código podría estar sujeto a inyecciones de código u otros defectos que pueden resultar en la filtración de datos privados o vulnerabilidades en la autenticación del usuario. Este tipo de vulnerabilidades podría potencialmente generarse por malas prácticas que el modelo introduce automáticamente y aprende incorrectamente del contexto, o simplemente se introduce gracias a una mala validación del usuario. Dada la creciente dependencia de estas herramientas, la falta de garantías de seguridad sobre el código representa una amenaza real para los desarrolladores y las organizaciones. En respuesta a este desafío, este trabajo propone un enfoque de evaluación sistemática que aprovecha herramientas de análisis estático de código (SAST), como SonarQube y Flawfinder, junto con revisión manual y una interacción iterativa con el modelo sobre un conjunto de casos de prueba. Este conjunto de casos, que aborda tareas típicas de desarrollo, fue diseñado y usado de manera uniforme sobre tres modelos generativos. El código generado fue analizado y las vulnerabilidades identificadas fueron luego analizadas en relación con los marcos OWASP Top 10 y MITRE CWE Top 25, con el fin de realizar un análisis cuantitativo y cualitativo respecto a la ocurrencia, tipos y permanencia de las vulnerabilidades. La tendencia general en los resultados es que todos los modelos probados, en la gran mayoría de casos de prueba, produjeron código defectuoso. Algunos modelos pueden corregir parcialmente dichos errores si se les solicita, pero encontramos que en el código generado después de pedir la corrección puede haber reintroducción de vulnerabilidades, o nuevas vulnerabilidades que no existían en la versión original. Los hallazgos más importantes incluyen la existencia de patrones consistentes de errores por modelo y lenguaje usado, las diferencias entre los modelos en la capacidad de autocorregirse, la permanencia de debilidades importantes, y cuál de esos modelos es el mejor en términos de rendimiento general, para la generación de código seguro, el descubrimiento de vulnerabilidades y su corrección. Dichos resultados ayudan a identificar las fortalezas y debilidades de los modelos y pueden ser una buena referencia para futuras comparaciones con nuevas bibliotecas LLM.
publishDate 2025
dc.date.accessioned.none.fl_str_mv 2025-06-10T18:59:32Z
dc.date.available.none.fl_str_mv 2025-06-10T18:59:32Z
dc.date.issued.none.fl_str_mv 2025-06-10
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.none.fl_str_mv Text
dc.type.redcol.none.fl_str_mv http://purl.org/redcol/resource_type/TP
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/1992/76269
dc.identifier.instname.none.fl_str_mv instname:Universidad de los Andes
dc.identifier.reponame.none.fl_str_mv reponame:Repositorio Institucional Séneca
dc.identifier.repourl.none.fl_str_mv repourl:https://repositorio.uniandes.edu.co/
url https://hdl.handle.net/1992/76269
identifier_str_mv instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.none.fl_str_mv spa
language spa
dc.rights.en.fl_str_mv Attribution-NoDerivatives 4.0 International
dc.rights.uri.none.fl_str_mv http://creativecommons.org/licenses/by-nd/4.0/
dc.rights.accessrights.none.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv Attribution-NoDerivatives 4.0 International
http://creativecommons.org/licenses/by-nd/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 47 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de los Andes
dc.publisher.program.none.fl_str_mv Ingeniería de Sistemas y Computación
dc.publisher.faculty.none.fl_str_mv Facultad de Ingeniería
dc.publisher.department.none.fl_str_mv Departamento de Ingeniería de Sistemas y Computación
publisher.none.fl_str_mv Universidad de los Andes
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/d62fb201-a98c-4411-989b-2314032b2a01/download
https://repositorio.uniandes.edu.co/bitstreams/e9f4229b-f7b8-4bd3-8725-ef3bbb733aa5/download
https://repositorio.uniandes.edu.co/bitstreams/91761469-63de-4678-853f-78d6ef1be7aa/download
https://repositorio.uniandes.edu.co/bitstreams/a5c8742b-f7a9-44f9-83f3-b4bdcf664d45/download
https://repositorio.uniandes.edu.co/bitstreams/53a6910e-dc8b-4010-a405-68f8f530a6ad/download
https://repositorio.uniandes.edu.co/bitstreams/22c9f605-0c1f-4ed6-97ec-5847fc8d09f3/download
https://repositorio.uniandes.edu.co/bitstreams/0e230ac8-a44a-4a00-bc1d-ecb081f19b05/download
https://repositorio.uniandes.edu.co/bitstreams/94875181-6d90-489f-bb8d-4e061f570198/download
bitstream.checksum.fl_str_mv 702aa089a349d4d47984dc5d5a79ad42
c4ee585db07d66efba4a6dc45d1ba7a7
f7d494f61e544413a13e6ba1da2089cd
ae9e573a68e7f92501b6913cc846c39f
da98ce9fa550c13bdb566709d9d13bd6
602a2c03aab44a4cf66ed72b8c6cc3e3
d65be8321e9db47269cbaad7f298ff3e
359eeefc8e297da479d04df5fa5c1b3a
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1837004902852722688
spelling Rueda Rodríguez, Sandra Julietavirtual::24182-1Rivera Ladino, Josue Mauricio2025-06-10T18:59:32Z2025-06-10T18:59:32Z2025-06-10https://hdl.handle.net/1992/76269instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Los modelos de lenguaje a gran escala (LLMs), como ChatGPT, DeepSeek, Microsoft Copilot, se han popularizado como asistentes de programación por su facilidad de uso y capacidad para generar código a partir de instrucciones simples. Entre las aplicaciones de estos modelos se destacan la creación de funciones, consultas de bases de datos, interfaces web y algoritmos complejos. Sin embargo, estos modelos también presentan riesgos importantes, ya que el código generado puede tener vulnerabilidades de seguridad que permiten inyecciones de código, filtraciones de datos o errores en autenticación. El problema principal que este trabajo estudia es la presencia de debilidades de seguridad en el código generado automáticamente por modelos LLM. Estudios recientes han revelado que tal código podría estar sujeto a inyecciones de código u otros defectos que pueden resultar en la filtración de datos privados o vulnerabilidades en la autenticación del usuario. Este tipo de vulnerabilidades podría potencialmente generarse por malas prácticas que el modelo introduce automáticamente y aprende incorrectamente del contexto, o simplemente se introduce gracias a una mala validación del usuario. Dada la creciente dependencia de estas herramientas, la falta de garantías de seguridad sobre el código representa una amenaza real para los desarrolladores y las organizaciones. En respuesta a este desafío, este trabajo propone un enfoque de evaluación sistemática que aprovecha herramientas de análisis estático de código (SAST), como SonarQube y Flawfinder, junto con revisión manual y una interacción iterativa con el modelo sobre un conjunto de casos de prueba. Este conjunto de casos, que aborda tareas típicas de desarrollo, fue diseñado y usado de manera uniforme sobre tres modelos generativos. El código generado fue analizado y las vulnerabilidades identificadas fueron luego analizadas en relación con los marcos OWASP Top 10 y MITRE CWE Top 25, con el fin de realizar un análisis cuantitativo y cualitativo respecto a la ocurrencia, tipos y permanencia de las vulnerabilidades. La tendencia general en los resultados es que todos los modelos probados, en la gran mayoría de casos de prueba, produjeron código defectuoso. Algunos modelos pueden corregir parcialmente dichos errores si se les solicita, pero encontramos que en el código generado después de pedir la corrección puede haber reintroducción de vulnerabilidades, o nuevas vulnerabilidades que no existían en la versión original. Los hallazgos más importantes incluyen la existencia de patrones consistentes de errores por modelo y lenguaje usado, las diferencias entre los modelos en la capacidad de autocorregirse, la permanencia de debilidades importantes, y cuál de esos modelos es el mejor en términos de rendimiento general, para la generación de código seguro, el descubrimiento de vulnerabilidades y su corrección. Dichos resultados ayudan a identificar las fortalezas y debilidades de los modelos y pueden ser una buena referencia para futuras comparaciones con nuevas bibliotecas LLM.Pregrado47 páginasapplication/pdfspaUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y ComputaciónAttribution-NoDerivatives 4.0 Internationalhttp://creativecommons.org/licenses/by-nd/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.Trabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPIAGeneración de códigoVulnerabilidades en códigoLLMIngeniería201914138Publicationhttps://scholar.google.es/citations?user=picn4ngAAAAJvirtual::24182-10000-0002-2111-9348virtual::24182-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000143111virtual::24182-1e336d2eb-f251-470f-b975-2d5e63ce65c9virtual::24182-1e336d2eb-f251-470f-b975-2d5e63ce65c9virtual::24182-1ORIGINALEvaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.pdfEvaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.pdfapplication/pdf1739115https://repositorio.uniandes.edu.co/bitstreams/d62fb201-a98c-4411-989b-2314032b2a01/download702aa089a349d4d47984dc5d5a79ad42MD51autorizacionTesis.pdfautorizacionTesis.pdfHIDEapplication/pdf320150https://repositorio.uniandes.edu.co/bitstreams/e9f4229b-f7b8-4bd3-8725-ef3bbb733aa5/downloadc4ee585db07d66efba4a6dc45d1ba7a7MD52CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8799https://repositorio.uniandes.edu.co/bitstreams/91761469-63de-4678-853f-78d6ef1be7aa/downloadf7d494f61e544413a13e6ba1da2089cdMD53LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/a5c8742b-f7a9-44f9-83f3-b4bdcf664d45/downloadae9e573a68e7f92501b6913cc846c39fMD54TEXTEvaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.pdf.txtEvaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.pdf.txtExtracted texttext/plain97744https://repositorio.uniandes.edu.co/bitstreams/53a6910e-dc8b-4010-a405-68f8f530a6ad/downloadda98ce9fa550c13bdb566709d9d13bd6MD55autorizacionTesis.pdf.txtautorizacionTesis.pdf.txtExtracted texttext/plain2084https://repositorio.uniandes.edu.co/bitstreams/22c9f605-0c1f-4ed6-97ec-5847fc8d09f3/download602a2c03aab44a4cf66ed72b8c6cc3e3MD57THUMBNAILEvaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.pdf.jpgEvaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.pdf.jpgIM Thumbnailimage/jpeg6588https://repositorio.uniandes.edu.co/bitstreams/0e230ac8-a44a-4a00-bc1d-ecb081f19b05/downloadd65be8321e9db47269cbaad7f298ff3eMD56autorizacionTesis.pdf.jpgautorizacionTesis.pdf.jpgIM Thumbnailimage/jpeg17093https://repositorio.uniandes.edu.co/bitstreams/94875181-6d90-489f-bb8d-4e061f570198/download359eeefc8e297da479d04df5fa5c1b3aMD581992/76269oai:repositorio.uniandes.edu.co:1992/762692025-06-11 04:00:40.381http://creativecommons.org/licenses/by-nd/4.0/Attribution-NoDerivatives 4.0 Internationalopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K