다음 코드에 대해 hacking에 속하는지 봐주세요..

sr97의 이미지

kernel module에서 application program으로 데이터가 전달되어야 합니
다. 이 데이터는 동적으로 증가하기 때문에 linked list로 작성이 되어 있습니
다.

데이터의 개수나 크기가 동적이기 때문에 user level의 application program
이 데이터를 전송받기 위해 system call을 사용합니다. 새로운 system call을
이용하여 linked list관련 data structure와 function들이 전달되어 데이터 교
환을 수행합니다.
/* kernel level 에서 data를 유지하기 위해 사용하는 자료구조체 입니다. */
struct dm_node
{
/* data 영역 */
dm_node *next;
};

struct dm_list
{
dm_node *head;
dm_node *tail;
/* data 영역 */
};

/* user level에서 data를 수신하기 위해 사용하는 data structure입니다 */
struct ul_node
{
/* data 영역 */
ul_node *next;
};

struct ul_list
{
ul_node *head;
ul_node *tail;
/* data 영역 */
void (*init_list)(ul_list *root);
void (*insert_node)(ul_list *root, ul_node *node);
void *(*alloc_memory)(int size);
};

이중 struct ul_list의 member function인 void *(*alloc_memory)(int
size); 이부분에 hacking의 요소가 있다고 동료가 말하더군요.
alloc_memory 함수에 들어가는 function 주소값은 malloc() 함수의 주소값
이 들어갑니다.

혹 이러한 방법이 비 정상적인지 hacking에 속하는 지가 궁금합니다.
제 생각에는 kernel level은 특권 계층이고 그 계층 내에 user level이 속하기
때문에 사용에 있어 hacking이라고는 생각하지 않지만 약간 헷갈리네요..
고수님들의 판정 바랍니다. (음료수 내기거덩요.. ^^)

hb_kim의 이미지

네, vulnerable한 커널 코드입니다.

커널코드에서 애플리케이션이 준 함수주소를 호출하는것고 그렇고, 이전 스레드에서 다른 분이 이미 지적하셨듯이 시스템 콜을 쓰면 여러가지로 안좋겠죠.

sr97의 이미지

그런데 어떤 면에서 취약하다는 건지 그러니까 어떤 시나리오에서 어떻게 공격을 받을 수 있다는 건지 말씀해 주시면 더 도움이 될 거 같습니다.
부탁드리겠습니다.

hb_kim의 이미지

시스템 콜은 유저 모드의 애플리케이션이 시스템 전반에 치명적 장애를 일으키지 못하도록 지키는 좁은 통로의 역할을 합니다. 암호화와 비슷한 예로 인터페이스가 공개되어 있더라도 뚫리지 않도록 설계되어야 한다는 것입니다.

함수 어드레스에 malloc 말고 다른것을 넣어서 한번 시험해 보십시오. 이를테면 NULL 이라던지, 아니면 printf 라던지, 무한루프를 도는 함수라던지...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.